package cn.zjk.springframework.beans.factory;

import cn.zjk.springframework.beans.BeansException;

/**
 * @author zjk
 * @CreateTime 2023/3/18 0:53
 */
public interface BeanFactory {
    /**
     * 获取bean
     * @param name
     * @return
     */
    Object getBean(String name);

    /**
     * 新增args对象，利于传参数给构造函数实例化
     * @param name
     * @param args
     * @return
     */
    Object getBean(String name,Object... args);

    /**
     * 按照类型获取 Bean 的方法
     * @param name
     * @param requiredType
     * @return
     * @param <T>
     * @throws BeansException
     */
    <T> T getBean(String name,Class<T> requiredType) throws BeansException;
}
